Can a trend in the geographical spread of Swedish Viking runestones be observed by comparing the proportion of runestones with and without crosses over time?
This report ascertains associative trends between the establishment of runestones in the Gotland region and the concurrent Christianisation in Gotland and Uppsala counties with analysis to assess the scope of this model for further predictions.
Analysis of categorical data (crosses/time period) revealed that Uppsala and Gotland runestones were predominantly erected between 1050-1100 AD. Majority of Uppsala’s crosses are observed during this period, however, none of the analysed runestones from Gotland featured the cross motif. This elucidates the non-uniform, nuanced spread of Christianity across Sweden.
Reliant upon visual interpretation, the data is subject to observation bias. Confounders including time and environment contribute to bias by making certain stylistic features across different rune-carvers indistinguishable. Data integrity and reliability is compromised by using multiple data sources and interpretation based on secondary archaeological sources including the epic Beowulf.
Selection bias occurred as ambiguous data including question marks, multiple categorisations, and unclassified data was re-categorised into 8 categories: RAK, Fp, Pr1-5 and NA. This report’s graphical summaries compound selection bias by only focusing on Uppsala and Gotland municipalities. By omitting large quantities of data, the results cannot characterise Viking society broadly as macroscopic trends may be unclear or skewed. Further, by narrowing our range of analysis to two municipalities, we cannot extrapolate trends to other regions. Similar case by case analysis must be conducted to construct plausible predictions for alternative locations. Additionally, runestones with overlapping time periods were only recognised in this report by the earliest of their assigned periods, causing categorical bias. Likewise, runestones which lacked a cross/no cross classification were grouped with those having no cross.
While it is noted that bias hinders the plausibility of conclusions drawn, this is largely inherent to archaeological studies.
Limited to Svealand, Christian influences from missionaries commenced in 830 AD, catalysing an evolution of the location and design of runestones. Rising political tension with neighbouring Christian areas induced Christianisation, thus, the prospect of superior trade and economic performance propelled conversion rather than the pursuit of holiness.
Uppsala observes an influx of runestone prevalence during 1060-1100 AD (Pr4), concurrent with the increase of runestone crosses. Its close proximity to the Baltic Sea on the south-east coast of modern day Sweden, facilitated the introduction of foriegn social and religious influences to the Vikings. This supported a transition from polytheistic paganism towards monotheistic Christianity over the short period revealed by the surge in runestone crosses. This period followed the first Christian evangelisation mission in Uppsala, led by Saint Ansgar during the 9th century, providing context to this stage of religious conversion.
From the classified runestones in Gotland, a significant proportion were erected during the Pr4 period. Unlike Uppsala, no crosses were observed on runestones across all time periods. This not only suggests an uneven spread of Christian beliefs throughout Viking society, but also the need for models alike to identify subtle trends in data. Gotland is isolated from mainland Sweden and therefore bound to undergo religious transformation after other municipalities like Uppsala, which was well-connected with multiple regions and foreign influences via trade interactions. Findings from the maps are supported by churches’ locations in these municipalities. Nonetheless, archaeologists currently lack evidence to determine whether runestones were erected at churches, subsequent church sites, or brought to churches later.
Grouped bar plots quantified the comparison of runestones with/without crosses. While a larger quantity of runestones is observed in Uppsala, the most notable trend was the complete absence of crosses on runestones in Gotland. This may be attributed to the vast majority of runestones in Gotland lacking cross identification, thus classed in this report as ‘no cross’. This assumption may be misleading.
Hence, Christianization of the Vikings began in well-connected municipalities, susceptible to foriegn influences. Christianity slowly infiltrated more regional and often isolated municipalities, however, conversion was not observed as heavily in these regions.
library(tidyverse)## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5 ✓ purrr 0.3.4
## ✓ tibble 3.1.6 ✓ dplyr 1.0.8
## ✓ tidyr 1.2.0 ✓ stringr 1.4.0
## ✓ readr 2.1.2 ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(ggplot2)
library(readxl)
library(maps)##
## Attaching package: 'maps'
## The following object is masked from 'package:purrr':
##
## map
library(plotly)##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(ggthemes)
library(ggmap)## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
##
## Attaching package: 'ggmap'
## The following object is masked from 'package:plotly':
##
## wind
library(wesanderson)
library(RColorBrewer)Arch <- read_xls("Arch_main.xls")
Arch = mutate(Arch,ClassNew = case_when(
grepl('RAK',Classification)~'RAK',
grepl('Fp',Classification)~'Fp',
grepl('Pr1',Classification)~'Pr1',
grepl('Pr2',Classification)~'Pr2',
grepl('Pr3',Classification)~'Pr3',
grepl('Pr4',Classification)~'Pr4',
grepl('Pr5',Classification)~'Pr5',
TRUE~ 'NA'
))
table(Arch$ClassNew)##
## Fp NA Pr1 Pr2 Pr3 Pr4 Pr5 RAK
## 212 2308 90 205 303 427 62 561
Arch$ClassNew <- factor(Arch$ClassNew,levels=c("RAK","Fp","Pr1","Pr2","Pr3","Pr4","Pr5","NA"), ordered=TRUE)
ggplot(data=Arch,aes(x=ClassNew))+geom_bar(fill="light blue")+
ggtitle("Runestone Typology across different Time Periods in Sweden")+
labs(x="Time Periods",y="Number of Runestones") +
theme_clean()rune_mast <- read_xlsx("Uppsala_trial.xlsx")
as.data.frame(rune_mast)runedata <- read_xlsx("1Gotlandclean.xlsx")
as.data.frame(runedata) summary(rune_mast)## ID Cross Place Socken
## Length:305 Min. :0.0000 Length:305 Length:305
## Class :character 1st Qu.:0.0000 Class :character Class :character
## Mode :character Median :0.0000 Mode :character Mode :character
## Mean :0.3115
## 3rd Qu.:1.0000
## Max. :1.0000
## Härad Kommun Classification Latitude
## Length:305 Length:305 Length:305 Min. :58.39
## Class :character Class :character Class :character 1st Qu.:59.86
## Mode :character Mode :character Mode :character Median :59.88
## Mean :59.88
## 3rd Qu.:59.95
## Max. :60.16
## Long Longitude Lat
## Min. :6625825 Min. :13.58 Min. :1582025
## 1st Qu.:6638510 1st Qu.:17.51 1st Qu.:1595827
## Median :6642537 Median :17.62 Median :1600608
## Mean :6644023 Mean :17.55 Mean :1600726
## 3rd Qu.:6649850 3rd Qu.:17.69 3rd Qu.:1604533
## Max. :6671945 Max. :18.68 Max. :1643937
summary(runedata)## Signum Crosses Plats Socken
## Length:267 Length:267 Length:267 Length:267
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Härad Kommun Classif Ristare
## Length:267 Length:267 Length:267 Length:267
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Materialtyp Bildlänk Lat Long
## Length:267 Length:267 Min. :56.94 Min. :18.09
## Class :character Class :character 1st Qu.:57.27 1st Qu.:18.30
## Mode :character Mode :character Median :57.49 Median :18.47
## Mean :57.47 Mean :18.50
## 3rd Qu.:57.71 3rd Qu.:18.70
## Max. :57.92 Max. :19.10
rune_mast = mutate(rune_mast,classif = case_when(
grepl('RAK',Classification)~'RAK',
grepl('Fp',Classification)~'Fp',
grepl('Pr1',Classification)~'Pr1',
grepl('Pr2',Classification)~'Pr2',
grepl('Pr3',Classification)~'Pr3',
grepl('Pr4',Classification)~'Pr4',
grepl('Pr5',Classification)~'Pr5',
TRUE~ 'NA'))
data = mutate(runedata,Classif = case_when(
grepl('RAK',Classif)~'RAK',
grepl('Fp',Classif)~'Fp',
grepl('Pr1',Classif)~'Pr1',
grepl('Pr2',Classif)~'Pr2',
grepl('Pr3',Classif)~'Pr3',
grepl('Pr4',Classif)~'Pr4',
grepl('Pr5',Classif)~'Pr5',
TRUE~ 'NA'))
runedata$Classif <- factor(runedata$Classif, levels = c("RAK","Fp","Pr1","Pr2","Pr3","Pr4","Pr5","NA"), ordered = TRUE)
rune_mast$classif <- factor(rune_mast$classif, levels = c("RAK","Fp","Pr1","Pr2","Pr3","Pr4","Pr5","NA"), ordered = TRUE)Class <- rune_mast$classif
Crosses <- factor(rune_mast$Cross, levels = c(0:1))
uppsala_map <- get_stamenmap(bbox =c(16.9794,59.6788,18.5751,60.1381), maptype="toner-lite",
zoom=11)## 60 tiles needed, this may take a while (try a smaller zoom).
## Source : http://tile.stamen.com/toner-lite/11/1120/593.png
## Source : http://tile.stamen.com/toner-lite/11/1121/593.png
## Source : http://tile.stamen.com/toner-lite/11/1122/593.png
## Source : http://tile.stamen.com/toner-lite/11/1123/593.png
## Source : http://tile.stamen.com/toner-lite/11/1124/593.png
## Source : http://tile.stamen.com/toner-lite/11/1125/593.png
## Source : http://tile.stamen.com/toner-lite/11/1126/593.png
## Source : http://tile.stamen.com/toner-lite/11/1127/593.png
## Source : http://tile.stamen.com/toner-lite/11/1128/593.png
## Source : http://tile.stamen.com/toner-lite/11/1129/593.png
## Source : http://tile.stamen.com/toner-lite/11/1120/594.png
## Source : http://tile.stamen.com/toner-lite/11/1121/594.png
## Source : http://tile.stamen.com/toner-lite/11/1122/594.png
## Source : http://tile.stamen.com/toner-lite/11/1123/594.png
## Source : http://tile.stamen.com/toner-lite/11/1124/594.png
## Source : http://tile.stamen.com/toner-lite/11/1125/594.png
## Source : http://tile.stamen.com/toner-lite/11/1126/594.png
## Source : http://tile.stamen.com/toner-lite/11/1127/594.png
## Source : http://tile.stamen.com/toner-lite/11/1128/594.png
## Source : http://tile.stamen.com/toner-lite/11/1129/594.png
## Source : http://tile.stamen.com/toner-lite/11/1120/595.png
## Source : http://tile.stamen.com/toner-lite/11/1121/595.png
## Source : http://tile.stamen.com/toner-lite/11/1122/595.png
## Source : http://tile.stamen.com/toner-lite/11/1123/595.png
## Source : http://tile.stamen.com/toner-lite/11/1124/595.png
## Source : http://tile.stamen.com/toner-lite/11/1125/595.png
## Source : http://tile.stamen.com/toner-lite/11/1126/595.png
## Source : http://tile.stamen.com/toner-lite/11/1127/595.png
## Source : http://tile.stamen.com/toner-lite/11/1128/595.png
## Source : http://tile.stamen.com/toner-lite/11/1129/595.png
## Source : http://tile.stamen.com/toner-lite/11/1120/596.png
## Source : http://tile.stamen.com/toner-lite/11/1121/596.png
## Source : http://tile.stamen.com/toner-lite/11/1122/596.png
## Source : http://tile.stamen.com/toner-lite/11/1123/596.png
## Source : http://tile.stamen.com/toner-lite/11/1124/596.png
## Source : http://tile.stamen.com/toner-lite/11/1125/596.png
## Source : http://tile.stamen.com/toner-lite/11/1126/596.png
## Source : http://tile.stamen.com/toner-lite/11/1127/596.png
## Source : http://tile.stamen.com/toner-lite/11/1128/596.png
## Source : http://tile.stamen.com/toner-lite/11/1129/596.png
## Source : http://tile.stamen.com/toner-lite/11/1120/597.png
## Source : http://tile.stamen.com/toner-lite/11/1121/597.png
## Source : http://tile.stamen.com/toner-lite/11/1122/597.png
## Source : http://tile.stamen.com/toner-lite/11/1123/597.png
## Source : http://tile.stamen.com/toner-lite/11/1124/597.png
## Source : http://tile.stamen.com/toner-lite/11/1125/597.png
## Source : http://tile.stamen.com/toner-lite/11/1126/597.png
## Source : http://tile.stamen.com/toner-lite/11/1127/597.png
## Source : http://tile.stamen.com/toner-lite/11/1128/597.png
## Source : http://tile.stamen.com/toner-lite/11/1129/597.png
## Source : http://tile.stamen.com/toner-lite/11/1120/598.png
## Source : http://tile.stamen.com/toner-lite/11/1121/598.png
## Source : http://tile.stamen.com/toner-lite/11/1122/598.png
## Source : http://tile.stamen.com/toner-lite/11/1123/598.png
## Source : http://tile.stamen.com/toner-lite/11/1124/598.png
## Source : http://tile.stamen.com/toner-lite/11/1125/598.png
## Source : http://tile.stamen.com/toner-lite/11/1126/598.png
## Source : http://tile.stamen.com/toner-lite/11/1127/598.png
## Source : http://tile.stamen.com/toner-lite/11/1128/598.png
## Source : http://tile.stamen.com/toner-lite/11/1129/598.png
ggmap(uppsala_map)+
geom_point(
data = rune_mast,
aes(x=Longitude, y=Latitude, color=Class, shape=Crosses),size=2.5, alpha=0.4)+
theme_map()+theme(legend.background = element_blank(), legend.position = "bottom")+
guides(fill=guide_legend(title="Classification"))+
ggtitle("Geographical distribution of Runestones in the Uppsala County")ggmap(uppsala_map)+
geom_point(
data = rune_mast,
aes(x=Longitude, y=Latitude, col=Crosses),size=2, alpha=0.4)+
theme_map()+
theme(legend.background = element_blank(), legend.position = "bottom")+
guides(fill=guide_legend(title="Classification"))+
ggtitle("Geographical distribution of Runestones in the Uppsala County")+
facet_wrap(vars(classif))+
theme(legend.background = element_blank(), legend.position = "right")+
scale_color_manual(values=wes_palette(n=3, name="BottleRocket1"))uppsala_cross <- ggplot(data = rune_mast, aes(x = Class))+
geom_bar(aes(fill=Crosses), position = "dodge")+
ggtitle("Proportion of Crosses across Time in Uppsala")+
theme(legend.background = element_blank(), legend.position = "bottom")+
theme_bw()
ggplotly(uppsala_cross)Classes <- runedata$Classif
gotland_map <- get_stamenmap(
bbox = c(left = 17.5, bottom = 57.0, right = 19.8, top = 57.9),
maptype = "toner-lite",
zoom = 9
)## Source : http://tile.stamen.com/toner-lite/9/280/154.png
## Source : http://tile.stamen.com/toner-lite/9/281/154.png
## Source : http://tile.stamen.com/toner-lite/9/282/154.png
## Source : http://tile.stamen.com/toner-lite/9/283/154.png
## Source : http://tile.stamen.com/toner-lite/9/284/154.png
## Source : http://tile.stamen.com/toner-lite/9/280/155.png
## Source : http://tile.stamen.com/toner-lite/9/281/155.png
## Source : http://tile.stamen.com/toner-lite/9/282/155.png
## Source : http://tile.stamen.com/toner-lite/9/283/155.png
## Source : http://tile.stamen.com/toner-lite/9/284/155.png
## Source : http://tile.stamen.com/toner-lite/9/280/156.png
## Source : http://tile.stamen.com/toner-lite/9/281/156.png
## Source : http://tile.stamen.com/toner-lite/9/282/156.png
## Source : http://tile.stamen.com/toner-lite/9/283/156.png
## Source : http://tile.stamen.com/toner-lite/9/284/156.png
ggmap(gotland_map) +
geom_point(data = runedata,
aes(x = Long, y = Lat,col = Classif),
size = 2, alpha = 0.7) +
labs(title = "Overall Distribution of Runestones in the Gotland County") +
theme_map() +
theme(legend.background = element_blank(), legend.position = "bottom")ggmap(gotland_map) +
geom_point(data = runedata,
aes(x = Long, y = Lat, fill=Crosses),alpha = 0.5,
size = 0.9, col = "red") + facet_wrap(vars(Classif))+
ggtitle("Geographical Distribution of Runestones in the Gotland County") +
theme_map() +
theme(legend.background = element_blank(), legend.position = "bottom") Crosses.Gotland <- runedata$Crosses
gotland_cross <- ggplot(data = runedata, aes(x = Classes))+geom_bar(aes(fill=Crosses.Gotland))+
theme(legend.background = element_blank(), legend.position = "bottom")+
ggtitle("Proportion of Crosses across Time in Gotland")+ theme_bw()
ggplotly(gotland_cross)| Role | Coordinator | Support |
|---|---|---|
| Presentation | Ariel, Jacqui (presenter) | Luana |
| Coding | Shradha | Ru |
| Scheduling | Luana | |
| Research | Jennifer | Ariel, Luana (editors) |
Meetings
| Date, time | Presentee(s) | Discussion points |
|---|---|---|
| 8/3 (11am-12pm) | All | Possible research questions; Finalise roles |
| 15/3 (11am-12pm) | All | Finalise research question |
| 22/3 (11am-12pm) | All | Conduct domain research and consolidate findings with group members |
| 29/3 (11am-12pm) | All | Discuss approach of research question; Begin report draft; Begin coding for graphical summaries |
| 5/4 (11am-12pm) | All | Finalise graphical summaries; Derive trends from graphical summaries |
| 12/4 (11am-12pm) | All | Film presentation; Finalise report |
Knutson, S. A. (2016). Bridges to Eternity: A Re-Examination of the Adoption of Christianity in Viking-Age Sweden. Viking and Medieval Scandinavia, 12, 87–102. https://www.jstor.org/stable/48501798
Knuston asserts that Christianity was actively uptaken by the Vikings, particularly in well-connected municipalities which benefited from access to foreign influences via trade interactions.
Thoeming, A. (2016). Dealing with Data: Naïve Bayesian Classification and a Case Study from Viking Age Sweden. International Journal of Student Research in Archaeology, 1(1), 193-204. https://www.academia.edu/21431922/Dealing_with_Data_Na%C3%AFve_Bayesian_Classification_and_a_case_study_from_Viking_Age_Sweden
Encountering similar limitations in the data to this report, Thoeming determined that the Bayesian classifier was limited, only providing broader categorisations in feature combinations and differences.
Tutorial for creating maps: https://www.youtube.com/watch?v=2k8O-Y_uiRU
Conversion of coordinates: https://coordinates-converter.com/en/decimal/51.000000,10.000000?karte=OpenStreetMap&zoom=8
Data Cleaning: Freya and Sean (Tuesday Lab CC)